package leetcode.每日一题;

import org.junit.Test;

import java.util.*;

/**
 * @author ：zsy
 * @date ：Created 2022/1/15 13:31
 * @description：https://leetcode-cn.com/problems/calculate-money-in-leetcode-bank/
 */
public class 计算力扣银行的钱 {
    @Test
    public void test() {
        Solution solution = new Solution();
        System.out.println(solution.totalMoney(21));
    }

    class Solution {
        int[] sums = new int[]{0, 1, 3, 6, 10, 15, 21, 28};
        public int totalMoney(int n) {
            int ans = 0;
            int factor = n / 7;
            // factor * 28:够7个的部分
            // 1 - 7； 2 - 8； 3 - 9 他们每七项的差值是一个公差为7的等差数列，求出他们的差值总和
            // factor * (n % 7) + sums[n % 7] 最后不够的项数和
            ans += factor * 28 + (factor - 1) * factor / 2 * 7 + factor * (n % 7) + sums[n % 7];
            return ans;
        }
    }
}
